var express = require('express');
var router = express.Router();

var Goods = require("../model/goods");

/* GET home page. */
router.get('/', function (req, res, next) {
    res.render('index', { title: 'Express' });
});

// 商品数据集合(表)  -> 建表
// {name,img,price,shopName}

// 商品的增删改查

// goods/all
router.get('/all', function (req, res, next) {
    Goods.find({}).then(list => {
        res.json({
            status: 200,
            message: "OK",
            list,
        })
    }).catch(err => {
        res.json({
            status: 500,
            message: err.message,
        })
    })
});

// /goods/get     商品搜索(wd="")  排序(字段名col  排序的方式:asc(1) desc(-1)) 分页(skip  limit)
// wd 搜索的关键词 ""查询所有数据
// col 排序的字段名 (_id title price)   
// type 排序的方式  asc(升序)  desc(降序)
// page 第几页
// size 每页显示多少条 
router.get('/get', function (req, res) {
    var { wd, col, type, page, size } = req.query;
    wd = decodeURIComponent(wd);
    if (col && type && page && size) {
        var reg = new RegExp(wd, "i");

        var cols = ["_id", "title", "price"];
        if (!cols.includes(col)) {
            res.json({
                status: 300,
                message: "排序字段名只能是_id,title,price"
            })
            return;
        }

        var types = {
            asc: "1",
            desc: "-1"
        }
        if (!(type in types)) {
            res.json({
                status: 300,
                message: "排序的方式只能是asc,desc"
            })
        }

        if (!(size % 1 == 0 && size >= 1 && size <= 100)) {
            res.json({
                status: 300,
                message: "size只能是1-100的整数"
            })
        }

        // 每页显示十条   size = 10
        // 第1页   [1,10]    skip(0).limit(10)
        // 第2页   [11,20]    skip(10).limit(10)
        // 第3页   [21,30]    skip(20).limit(10)
        // page               skip((page-1)*size).limit(size)

        // 查询满足条件的数据的数量
        var maxPage = null;
        var total = null;
        Goods.find({ title: reg }).count().then(count => {
            total = count;

            maxPage = Math.ceil(count / size); // 查询的满足条件的数据的数量(59) / 每页显示多少条(10)

            if (page > maxPage) {
                page = maxPage;
            }
            if (page < 1) {
                page = 1;
            }

            return Goods.find({ title: reg }).sort({
                // 对象的键名 变量
                [col]: types[type]
            }).skip((page - 1) * size).limit(size);
        }).then(list => {
            res.json({
                status: 200,
                message: "查询成功",
                total,   //查询的数据有多少条
                current: page,   // 当前页是第几页
                maxPage,  // 最大页
                list: list,
            })
        }).catch(err => {
            res.json({
                status: 500,
                message: err.message,
            })
        })

        // Goods.find({title:reg}).sort({
        //     // 对象的键名 变量
        //     [col]:types[type]
        // }).skip((page-1)*size).limit(size).then(list=>{
        //     res.json({
        //         status:200,
        //         message:"查询成功",
        //         list:list,
        //     })
        // }).catch(err=>{
        //     res.json({
        //         status:500,
        //         message:err.message,
        //     })
        // })

    } else {
        res.json({
            status: 300,
            message: "请传入完整参数",
        })
    }
});




router.get('/getGoodsById', function (req, res) {
    var { id } = req.query;
    if (id) {
        console.log(11111, id);
        Goods.findById(id).then(doc => {

            if (doc) {
                res.json({
                    status: 200,
                    message: "查询成功",
                    data: doc
                })
            } else {
                res.json({
                    status: 404,
                    message: "查询失败,数据不存在",
                    data: null,
                })
            }

        })

    } else {
        res.json({
            status: 300,
            message: "请传入完整参数",
        })
    }
});





module.exports = router;
